home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Floppyshop 2
/
Floppyshop - 2.zip
/
Floppyshop - 2.iso
/
diskmags
/
0022-3.564
/
dmg-3323
/
protocol.gem
/
68000
/
prg_end.s
< prev
next >
Wrap
Text File
|
1987-04-21
|
2KB
|
63 lines
********************************************************
* EXTRAIT DE LA BIBLIOTHEQUE TUBE GEM *
* FICHIER "PRG_END.S" *
* VERSION 4.01 (07 Mai 1991) *
********************************************************
* Routine du protocole GEM. Cette routine doit être
* exécutée à la fin des programmes, afin de remttre
* le tableau en état (retrait de l'APP_ID du programme).
* JY_SUIS a été ajouté le 14/5/91 simplement par
* commodité (le N. de version reste le même)
OFF_TUBE_PRG:
MOVEM.L D0-D7/A0-A6,-(SP)
CMP.W #$FFFF,JY_SUIS
BEQ END_OFF_PRG
MOVE.L #"_TUB",COOKIE1
MOVE.L #0,COOKIE2
MOVE.L #0,COOKIE3
MOVE.W #0,COOKIE4
MOVE.L #COOKIE_JAR,-(SP)
MOVE.W #38,-(SP)
TRAP #14
ADDQ.L #6,SP
* En retour COOKIE2 contient l'adresse de la boite à gateaux.
TST.L COOKIE2 trouvé l'adresse ?
BEQ END_OFF_PRG non donc bye bye...
* et COOKIE3 l'adresse du tableau protocole
TST.L COOKIE3 trouvé ce tableau ?
BEQ END_OFF_PRG non donc bye bye...
* Nous allons vérifier que ce tableau contient bien
* les AP_ID et nous allons retirer le notre.
MOVE.L COOKIE3,A6
CMP.L #"PROT",(A6)+ L'en-tête est bonne ?
BNE END_OFF_PRG non donc bye bye...
* Continuons à avancer sur le tableau pour
* trouver notre AP_ID et le supprimer.
MOVE.W (A6)+,D5 nbr maxi d'APP_ID
.ICI MOVE.W (A6),D0 préléve cet AP_ID
CMP.W APP_ID,D0 compare avec notre AP_ID
BEQ FIND_IT
CMP.W #$FFFF,D0
BEQ END_OFF_PRG
SUBQ.W #1,D5 compte cet APP_ID
ADDA.L #2,A6 et pointe sur le suivant
BRA.S .ICI
* Notre AP_ID est trouvé: remontons tout le bas du tableau d'un cran.
FIND_IT MOVE.L A6,A5
ADDA.L #2,A5
MOVE.W (A5)+,D0
MOVE.W D0,(A6)+
CMP.W #$FFFF,D0
BEQ END_OFF_PRG
SUBQ.W #1,D5 compte cet APP_ID
CMP.W #1,D5
BNE FIND_IT
* D5=1 or c'est normalement impossible car je viens de retirer
* mon APP_ID, je vais donc forcer un flag de fin.
MOVE.W #$FFFF,(A6)
END_OFF_PRG
MOVEM.L (SP)+,D0-D7/A0-A6
RTS
*--------------------------------------------------------------------------*